container: guard container variable by reffing it
authorBenjamin Otte <otte@redhat.com>
Wed, 19 Mar 2014 12:23:38 +0000 (13:23 +0100)
committerBenjamin Otte <otte@redhat.com>
Wed, 19 Mar 2014 12:23:38 +0000 (13:23 +0100)
vte destroys the container during removal of a child. Don't crash in
that case due to recent a11y refactoring.

https://bugzilla.gnome.org/show_bug.cgi?id=726369

gtk/gtkcontainer.c

index 1a99de38302ff3dddd4613a56d68a3dff08bf400..389e65454645c6b90fddda202a32e65349608bc9 100644 (file)
@@ -1584,6 +1584,7 @@ gtk_container_remove (GtkContainer *container,
   g_return_if_fail (GTK_IS_WIDGET (widget));
   g_return_if_fail (gtk_widget_get_parent (widget) == GTK_WIDGET (container) || GTK_IS_ASSISTANT (container) || GTK_IS_ACTION_BAR (container));
 
+  g_object_ref (container);
   g_object_ref (widget);
 
   g_signal_emit (container, container_signals[REMOVE], 0, widget);
@@ -1591,6 +1592,7 @@ gtk_container_remove (GtkContainer *container,
   _gtk_container_accessible_remove (GTK_WIDGET (container), widget);
 
   g_object_unref (widget);
+  g_object_unref (container);
 }
 
 void